package nf.modular.modclass;

import java.io.File;
import java.util.List;

import nf.modular.ModuleHost;
import nf.modular.NFModule;
import nf.modular.NFModuleType;

public abstract class Trainer extends NFModule
{
	public enum OutputType
	{
		OutputFile,
		OutputBytes
	}
	
	public Trainer(ModuleHost host, String scratchDir)
	{
		super(host, scratchDir);
	}
	
	@Override
	public NFModuleType getModuleType()
	{
		return NFModuleType.Trainer;
	}

	public abstract boolean feedData(int dataClass, List<String> data);
	public abstract boolean feedData(int dataClass, byte[] data);
	public abstract boolean feedData(int dataClass, File data);
	public abstract boolean feedData(int dataClass, int[] data);
	public abstract boolean feedData(int dataClass, double[] data);
	
	public abstract boolean processData();
	
	public abstract OutputType getOutputType();
	public abstract File getOutputFile();
	public abstract byte[] getOutputBytes();
}
